Multitasking and Multiple Windows
原文:https://developer.apple.com/design/human-interface-guidelines/ios/system-capabilities/multitasking/
hr.icon
マルチタスクは、アプリスイッチャーを使ってアプリを素早く切り替えたり、デバイスごとに異なる体験を可能にする機能です。
例えば、iPhoneでは、FaceTimeやビデオをピクチャーインピクチャーウィンドウで見ながら、別のアプリを使うことができます。
https://gyazo.com/134292c8814a3ad83d51a98a139bc974
https://gyazo.com/7ccee883d8371411e2b1a655d49e638c
iPadのマルチタスク機能では、複数のアプリのウィンドウを同時に表示して操作することができます。
また、アプリではマルチウインドウを有効にすることができ、複数のアプリのウインドウを同時に表示して操作することができます。
https://gyazo.com/61b91d5116843a7626283b6a34d5afaf
https://gyazo.com/74a178d00477d8e0c50335b7ddd7a34a
iPadOSは、さまざまなワークフローをサポートするために、マルチタスキングウィンドウを多様な構成で表示することができます。
また、マルチタスクの構成を切り替えるための「マルチタスクコントロール」や、アプリ内で開いているすべてのウィンドウにアクセスできる「アプリシェルフ」も用意されています。
https://gyazo.com/ee53ae0399b7ef1032f2c54f22178ae7
https://gyazo.com/aae93d160d5beadc6e233eeba898a67b
iPadのマルチタスクウィンドウは、次のような構成で開くことができます。
スライドオーバー」は、1つ目のウィンドウがフルスクリーンで表示されている間に、2つ目のウィンドウをオーバーレイで開きます。
スライドオーバーウィンドウは、画面上の位置を変更したり、画面外に隠して後で取り出したりすることができます。
また、「スライドオーバー」で複数のウィンドウを開き、重ねて表示することもできます。
2つのウィンドウを並べて表示するスプリットビューでは、ウィンドウの相対的な面積を変更したり、両方のウィンドウを操作したりすることができます。
2つのウィンドウを並べて表示している間に、3つ目のウィンドウを「スライドオーバー」で開くこともできます。
Picture in Pictureでは、フルスクリーンアプリの上に浮かんだ、サイズ変更可能な可動式のウィンドウでビデオを開くことができます。
https://gyazo.com/fc486dac6899f1283c1ff56ae3c7638c
https://gyazo.com/ee05da10985810efe8db9efcc8615161
https://gyazo.com/118fa2dcd4726efd4b4b6f3f7568d3d9
注意
アプリはマルチタスクの設定を管理しておらず、ユーザーがどのような設定を選択したかを知ることもできません。
人々は自分のデバイスでマルチタスクを使うことを期待しているので、あなたのアプリケーションがマルチタスクを許可していないと、何かが間違っていると思うかもしれません。
稀な例外(フルスクリーンのみのiPadアプリなど)を除いて、すべてのアプリはマルチタスクでうまく動作するはずです。
詳しくはSupporting Multitaskingを参照してください。
iPadアプリケーションがSplit ViewやSlide Overで開かれたときに正しく反応するようにするには、異なるスクリーンサイズに適切に対応するようにします。
また、iPadのマルチタスク機能がどのように使われているかについては、Use Multitasking on your iPadを参照してください。
アプリがマルチタスクでうまく動作するようにするだけでなく、マルチウィンドウをサポートするために追加の実装を行う必要があります。
ガイダンスとしては、Enabling Multiple Windows on iPadを、開発者向けガイダンスとしては、Scenesをご覧ください。
重要なこと
iPad アプリの Mac 版でマルチウィンドウを有効にするには、iPad でマルチウィンドウを実装する必要があります。
ガイダンスは、Mac Catalystを参照してください。
Supporting Multitasking
マルチタスク環境で成功するためには、アプリはデバイス上の他のアプリと調和して共存し、CPU、メモリ、画面スペース、その他のシステムリソースの使用を最小限に抑える必要があります。
また、マルチタスクアプリは、他のアプリからの突然の中断や音声にも適切に対応し、バックグラウンドへの移行やバックグラウンドからの離脱を迅速かつスムーズに行い、バックグラウンドで動作する際には責任ある行動をとる必要があります。
割り込みに備え、再開できるようにしておきましょう。
アプリはいつでも中断される可能性があります。中断が発生した場合、アプリは現在の状態を迅速かつ正確に保存し、ユーザーが戻ってきたときに、中断したところからシームレスに続けられるようにする必要があります。
開発者向けのガイダンスについては、Responding to the Launch of Your Appを参照してください。
人々の注意や積極的な参加を必要とするアクティビティを一時停止します。
例えば、ゲームやメディアを見るアプリの場合、ユーザーが他のアプリに切り替えたときに何も見逃さないようにします。
また、アプリに戻ってきたときには、何事もなかったかのように続けてもらいます。
音声の途切れに適切に対応する。
時折、アプリの音声が他のアプリやシステム自体の音声によって中断されることがあります。
例えば、電話がかかってきたり、Siriが音楽プレイリストを起動したりすると、アプリの音声が中断されることがあります。
このような状況が発生した場合、人々はあなたのアプリが以下のように対応することを期待します。
音楽、ポッドキャスト、オーディオブックの再生など、一次的な音声の中断に対して、音声を無期限に一時停止する。
GPSの方向通知などの短い中断のために、一時的に音量を下げるかオーディオを一時停止し、中断が終了したら元の音量や再生を再開する。
詳しくはAudioを参照してください。
ユーザーが開始したタスクをバックグラウンドで終了させる。
ユーザーがタスクを開始すると、アプリから離れてもタスクが終了することを期待します。
アプリが追加の入力を必要としないタスクの実行中であれば、中断する前にバックグラウンドでタスクを完了させます。
通知は控えめにする。
アプリは、アプリがサスペンドしていても、バックグラウンドで実行されていても、あるいはまったく実行されていなくても、特定の時間に通知を送信するように手配できます。
一般的には、アプリがバックグラウンドでタスクを終了したときに通知を送信することは避けてください。
代わりに、ユーザーがアプリに戻ってタスクを確認できるようにします。詳細は、Notificationsを参照してください。
Enabling Multiple Windows on iPad
概念的には、iPadアプリは2種類のウィンドウを使ってコンテンツを提供する傾向があります。
プライマリウィンドウは、アプリの全階層を表示し、アプリのすべてのオブジェクトとそれらに関連するアクションにアクセスできます。例えば、Mailでは、プライマリウィンドウを使って、すべてのメールボックスとメッセージリストを表示します。
補助ウィンドウは、アプリ内の特定のタスクやエリアを表示するもので、多くの場合、モーダルな表示を使用します。補助ウィンドウは、1つの体験に特化しているため、他のアプリ領域へのナビゲーションはできず、一般的には、タスクの完了後に閉じるためのボタンが含まれています。例えば、メールでは、補助ウィンドウを使って1つのメッセージを表示します。
iPadOS 15以降では、プレゼンテーションスタイルを指定して、ユーザーがアプリで開く各ウィンドウの最初の外観を決めることができます。
人々はウィンドウを開いた後にその位置を変更することができますが、プレゼンテーションスタイルを指定することで、ウィンドウのタスクやコンテンツの性質を視覚的に強化することができます。
iPadOSでは、以下のプレゼンテーションスタイルが定義されています。
Prominent
モーダルなプレゼンテーションで、ウィンドウが高く表示され、周囲のエリアが暗くなり、それらとのインタラクションができなくなります。
Standard
横に並べて表示し、それぞれがアプリの全機能をサポートしている他のウィンドウとのやりとりを可能にします。
Automatic
アプリがウィンドウを要求したときのコンテキストに基づいてシステムが選択する表示方法です。
注意
単にファイルを表示させるだけなら、独自のウィンドウを作成せずに表示させることができますが、アプリで複数のウィンドウをサポートする必要があります。
開発者向けのガイダンスは、QLPreviewSceneActivationConfigurationを参照してください。
アプリの他の部分を開くことなく完了できる自己完結型のタスクを提示するには、著名なスタイルを使用します。
たとえば、著名なスタイルは、ドキュメントの編集や、特定のファイルやコンテンツのコレクションに限定された他のタスクを可能にするのに適しています。
メインのタスクに影響する副次的なタスクや補助的なアクション、選択項目の表示には使用しないでください。
同じタスクやコンテンツの複数のバージョンを表示するには、標準的なスタイルを使用します。
例えば、Safariでは、画面上の2つのブラウズウィンドウを同時に表示して操作できるように、標準スタイルを使用しています。
新しいウインドウを開くのは、ユーザーが明示的にアクションを起こしたときだけにします。
例えば、アプリケーションシェルフやApp Exposéにある追加(+)ボタンをタップしたり、メニュー項目を選択したりした場合です。
要求されていない新しいウィンドウを開いて人々を驚かせないようにします。
アプリのウィンドウは、有効にしたすべてのタスクに対応していることを確認してください。
複数のウィンドウは便利で効率的なワークフローを提供しますが、人々は常に1つのウィンドウですべてのアプリ機能にアクセスできる必要があります。
ユーザーが開いた各ウィンドウの状態を保持します。
人々は、あるウィンドウに戻ってきたときに、そのウィンドウが前回と同じ状態であることを期待します。
開発者向けのガイダンスは、Restoring Your App’s Stateを参照してください。
ジェスチャーを使ってコンテンツを新しいウィンドウで開けるようにすることを検討します。
たとえば、ピンチのジェスチャーを使ってノートの項目を新しいウィンドウに展開することができます。
ジェスチャーを使った遷移では、常に目立つ表示スタイルが使用されるため、アイテムやタスクを拡張した結果として、モーダルウィンドウが自然に表示されます。
開発者向けのガイダンスとしては、collectionView(_:seanicationActionConfigurationForItemAt:point:) (コレクションビューのアイテムから移行する場合)または UIWindowScene.ActivationInteraction (その他のビューのアイテムから移行する場合)を参照してください。
新しいウィンドウでコンテンツを開くことができるメニュー項目を提供することを考えます。
この動作を有効にすると、iPadまたはMac Catalystを使用したMac上でアプリを実行した場合、メニューに「新しいウィンドウで開く」項目が表示されますが、iPhone上でアプリを実行した場合は表示されません。
アプリで意味がある場合は、「詳細を表示...」など、アプリがiPhoneで実行されるときに表示される代替項目を提供することができます。
新しいウィンドウで開く」項目は、コンテキストメニューや、ボタンやバーボタンのアイテムに付随するメニューに追加することができます。
開発者向けのガイダンスとしては、UIWindowScene.ActivationActionを参照してください。
新しいウィンドウでコンテンツを開く方法を提供する場合、レイアウトの指定は避けてください。
ユーザーがどのようなマルチタスク構成を使用しているかわからないので、"分割表示で開く "や "前面表示で開く "といったメニュー項目の提供は避けてください。
ユーザー向けのコンテンツでは、常にウィンドウという言葉を使います。
システムでは、アプリのウィンドウは種類に関係なくウィンドウと呼ばれます。
ウィンドウの実装を意味するsceneを含め、異なる用語を使用することは、人々を混乱させる可能性があります。
<-- Home Screen Quick Actions
--> Notifications